package JXY02.Day02;

import java.util.Calendar;
import java.util.Objects;
import java.util.Scanner;

/**
 * 实现时间的计算: 要求用户输入身份证号，若格式有误，要求其重新输入。然后根据身份证号码输出20岁生日
 * 所在周的周三的日期。
 * 例如:
 * 出生日期:1992-07-15。
 * 20岁生日:2012-07-15
 * 当周的周三为:2012-07-18
 *
 */
public class Text05 {
    public static void main(String[] args) {
        //\d{17}[1234567890xX]{1}
        String regex ="\\d{17}[0-9xX]" ;
        Scanner sc =  new Scanner(System.in);
        String str;
        do {
            System.out.println("请输入正确的身份证号码：");
            str = sc.nextLine();
        } while (!str.trim().matches(regex.trim()));
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, Integer.parseInt(str.substring(6,10)));
        calendar.set(Calendar.MONTH, Integer.parseInt(str.substring(10,12)));
        calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(str.substring(12,14)));
        calendar.add(Calendar.YEAR,20-Integer.parseInt(str.substring(6,10)));
        calendar.set(Calendar.DAY_OF_WEEK,Calendar.WEDNESDAY);

        System.out.println(calendar.get(Calendar.DATE));

    }
}
